The Coppersmith method, proposed by Don Coppersmith, is a method to find small integer roots of polynomial equations. These polynomials can be univariate or bivariate. In cryptography the algorithm is mainly used in attacks on RSA when parts of the secret key are known.
The method uses the LLL algorithm [1] to find a polynomial that has the roots of the target polynomial as roots and has small coefficients.
Coppersmith’s method is based on lattice reduction. A lattice L is a subgroup of . Also there exists a k such that , where is a basis of L. The LLL algorithm computes a basis of short vectors. If k=n, the determinant of the lattice is given by det(L)=det(B); in general .
For any LLL reduced basis it holds that , see [2].
Let and assume that for some integer . Coppersmith’s algorithm can be used to find this integer solution .
Finding roots over Q is easy using e.g. Newton's method but these algorithms do not work modulo a composite number M. The idea behind Coppersmith’s method is to find a different polynomial related to F that has the same as a solution and has only small coefficients. If the coefficients and are so small that over the integers, then is a root of F over Q and can easily be found.
Coppersmith’s approach is a reduction of solving modular polynomial equations to solving polynomials over the integers. Coppersmith's algorithm uses LLL to construct the polynomial with small coefficients.
Given F, the algorithm constructs polynomials that have the same as root modulo , where a is some integer chosen dependent on the degree of F and the size of . Any linear combination of these polynomials has as root modulo .
The next step is to use the LLL algorithm to construct a linear combination of the so that the inequality holds. Now standard factorization methods can calculate the roots of over the integers.